home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / listings / v_13_05 / colton / auto_det.c < prev    next >
C/C++ Source or Header  |  1995-02-21  |  1KB  |  61 lines

  1. /*
  2.  * Listing 7 - auto-detect.c
  3.  */
  4.  
  5. #include <stdio.h>
  6. #include <unistd.h>
  7.  
  8. int
  9. main(argc, argv)
  10. int argc;
  11. char **argv;
  12. {
  13.     FILE *fp;
  14.     char buf[1000];
  15.     char buf2[1000];
  16.     char magic_number[12];
  17.     char format[5];
  18.  
  19.  
  20.     if(argc < 3) {
  21.         printf("Usage: %s infile outfile\n", argv[0]);
  22.         exit(1);
  23.     }
  24.  
  25.     fp = fopen(argv[1], "r");
  26.  
  27.     fread(magic_number, sizeof(char),
  28.         sizeof(magic_number), fp);
  29.  
  30.     fclose(fp);
  31.  
  32.     if (strncmp(magic_number,"GIF8",4) == 0)
  33.         (void) strcpy(format,"GIF");
  34.  
  35.     else if ((magic_number[1] == 0x00) &&
  36.                 (magic_number[2] == 0x00)) {
  37.             if ((magic_number[5] == 0x00) &&
  38.                     (magic_number[6] == 0x00))
  39.                 if ((magic_number[4] == 0x07) ||
  40.                         (magic_number[7] == 0x07))
  41.                     strcpy(format,"XWD");
  42.  
  43.     } else exit(1);
  44.  
  45.     if(strlen(format) == 0) exit(1);
  46.  
  47.     sprintf(buf2, "%s/%s",
  48.         getenv("LOADERS_DIR"), format);
  49.  
  50.     if(access(buf2, R_OK) != 0) {
  51.         printf("\n%s: %s format not available.\n",
  52.             argv[0], format);
  53.  
  54.         exit(1);
  55.     }
  56.  
  57.     sprintf(buf, "%s %s %s", buf2, argv[1], argv[2]);
  58.  
  59.     return system(buf);
  60. }
  61.